📖 목차
-
1. 멤버 변수란
2. 클래스 변수
3. 객체 변수
4. 비교표
5. 예제 코드
1. 멤버 변수란
멤버 변수는 클래스 내부에 정의된 변수를 통칭하는 용어이며, 일반적으로 클래스 변수와 인스턴스(객체) 변수를 모두 포함하는 상위 개념이다. 클래스 정의의 일부분으로, 클래스가 생성하는 모든 객체에 영향을 주거나, 각 객체가 개별적으로 소유할 수 있는 속성이다.
2. 클래스 변수
클래스 변수는 클래스 자체에 속하며, 해당 클래스로부터 생성된 모든 인스턴스가 공유하는 변수이다. 클래스 정의 내부에서 메서드 바깥에 선언되며, 일반적으로 클래스 전체에서 공통된 데이터를 저장하는 데 사용된다.
class Car:
wheels = 4 # 클래스 변수
def __init__(self, color):
self.color = color # 객체 변수
3. 객체 변수
객체 변수(또는 인스턴스 변수)는 클래스의 각 인스턴스가 개별적으로 소유하는 변수이다. 생성자 메서드 `__init__` 내부 등에서 `self` 키워드를 통해 정의되며, 객체마다 서로 다른 값을 가질 수 있다.
car1 = Car("red")
car2 = Car("blue")
print(car1.color) # red
print(car2.color) # blue
4. 비교표
| 구분 | 클래스 변수 | 객체 변수 (인스턴스 변수) |
|---|---|---|
| 정의 위치 | 클래스 정의 내부, 메서드 외부 | 클래스 내부 메서드 안, self를 통해 정의 |
| 소속 | 클래스 | 각 인스턴스 |
| 공유 여부 | 모든 인스턴스가 공유 | 인스턴스마다 별도로 존재 |
| 접근 방법 | 클래스명.변수 또는 self.변수 | self.변수 |
| 예시 | wheels = 4 | self.color = "red" |
5. 예제 코드
class Dog:
species = "Canine" # 클래스 변수
def __init__(self, name):
self.name = name # 객체 변수
dog1 = Dog("Buddy")
dog2 = Dog("Charlie")
print(dog1.species) # Canine
print(dog2.species) # Canine
Dog.species = "Wolf" # 클래스 변수 변경
print(dog1.species) # Wolf
print(dog2.species) # Wolf
print(dog1.name) # Buddy
print(dog2.name) # Charlie